package com.example.base_kotlin_xml.view

import androidx.lifecycle.lifecycleScope
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ToastUtils
import com.example.base_kotlin_xml.R
import com.example.base_kotlin_xml.databinding.FragmentAntiShakeBinding
import com.example.base_model.ext.setOnDelayClickListener
import com.example.base_model.ext.setOnSingleClickListener
import com.example.base_model.view.BaseFragment
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob

/**
 * @Author: jiangKunKun
 * @CreateDate: 2025/7/31
 * @Description: 防抖测试页面
 * @SpittingGrooves
 */
class AntiShakeFragment : BaseFragment<FragmentAntiShakeBinding>() {
    private val serviceScope = CoroutineScope(Dispatchers.Main + SupervisorJob())
    override fun initObservers() {
    }

    override fun initClickEvents() {
        // 短时间内只响应第一次点击
        mBinding.btnAntiShake1.setOnSingleClickListener(3000) {
            ToastUtils.showShort("短时间内只响应第一次点击")
            LogUtils.d("短时间内只响应第一次点击")
        }
        // 多次点击只响应最后一次点击 需要手动管理生命周期
        mBinding.btnAntiShake2.setOnDelayClickListener(3000, serviceScope) {
            ToastUtils.showShort("多次点击只响应最后一次点击")
            LogUtils.d("多次点击只响应最后一次点击")
        }
        // 多次点击只响应最后一次点击 不需要管理依附于Activity或Fragment
        mBinding.btnAntiShake3.setOnDelayClickListener(3000, lifecycleScope) {
            ToastUtils.showShort("多次点击只响应最后一次点击")
            LogUtils.d("多次点击只响应最后一次点击")
        }
    }

    override fun initData() {
    }

    override fun attachLayoutRes(): Int = R.layout.fragment_anti_shake
}